home *** CD-ROM | disk | FTP | other *** search
/ Experimental BBS Explossion 3 / Experimental BBS Explossion III.iso / c / cp1.zip / DFREE2.C < prev    next >
C/C++ Source or Header  |  1993-04-30  |  3KB  |  79 lines

  1. ===========================================================================
  2.  BBS: The Abacus * HST/DS * Potterville MI
  3. Date: 04-28-93 (18:45)             Number: 166
  4. From: WAYNE MATSON                 Refer#: NONE
  5.   To: CHRIS DOWNS                   Recvd: NO  
  6. Subj: get disk free space   2/2      Conf: (36) C Language
  7. ---------------------------------------------------------------------------
  8. >>> Continued from previous message
  9.     strCommas  = strLen / 3;
  10.     if (!(strLen % 3))
  11.         --strCommas;
  12.  
  13.     if (strCommas) {
  14.         dynStr = (char *)malloc(strLen + strCommas + 1);
  15.         dynPtr = dynStr + strLen + strCommas + 1;
  16.         strPtr = str + strLen;
  17.         *dynPtr = 0;
  18.  
  19.         for (i = 0, --dynPtr,--strPtr; i < strCommas; i++) {
  20.             for (x = 3; x > 0; x--)
  21.                 *dynPtr-- = *strPtr--;
  22.             *dynPtr-- = ',';
  23.         }
  24.         for (; str != strPtr; *dynPtr-- = *strPtr--);
  25.         *dynPtr = *strPtr;
  26.     }
  27.  
  28.     strcpy(str, dynPtr);
  29.     if (NULL != dynStr)
  30.         free(dynStr);
  31.     return str;
  32. }
  33.  
  34. static int GetDiskSpace(int drv, Ulong *ttlDrv, Ulong *ttlFree) {
  35. /******************************************************************************
  36.  ** Get disk drive total and free space.                                     **
  37.  **                                                                          **
  38.  ** Syntax:                                                                  **
  39.  ** int GetDiskSpace(int drv, unsigned long ttlDrv, unsigned log ttlFree)    **
  40.  **     drv     = integer value of drive to check, drives are number from    **
  41.  **               0 - maxDrive number. with 0 being default drive and 1 = A: **
  42.  **               2 - B: and so on.                                          **
  43.  **     ttlDrv  = address of unsigned long where total size of drive will    **
  44.  **               be returned.                                               **
  45.  **     ttlFree = address of unsigned long where total size of free space    **
  46.  **               will be returned                                           **
  47.  **                                                                          **
  48.  ** returns 0 upon success and non-zero if invalid drive specified           **
  49.  ******************************************************************************/
  50. Ulong           secPerCluster;
  51. Ulong           noAvailCluster;
  52. Ulong           bytesPerSector;
  53. Ulong           clusterPerDrv;
  54. union REGS      userRegs;
  55.  
  56.     userRegs.h.ah = GetFreeSpace;
  57.     userRegs.h.dl = drv;
  58.  
  59.     int86(DosInt21, &userRegs, &userRegs);
  60.  
  61.     secPerCluster   = userRegs.x.ax;
  62.     if (0x0000ffff == secPerCluster)
  63.         return 1;
  64.  
  65.     noAvailCluster  = userRegs.x.bx;
  66.     bytesPerSector  = userRegs.x.cx;
  67.     clusterPerDrv   = userRegs.x.dx;
  68.  
  69.     *ttlDrv         = secPerCluster * bytesPerSector * clusterPerDrv;
  70.     *ttlFree        = secPerCluster * bytesPerSector * noAvailCluster;
  71.     return 0;
  72. }
  73. snip-------------------------->------------------------------------------------
  74. --- RAMail 3.3
  75.  * Origin: ABACUS BBS - Chaparral,NM. (505) 824-0049 HST DS (1:381/85)
  76. SEEN-BY: 1/211 11/2 4 13/13 101/1 108/89 109/25 110/69 114/5 123/19 124/1
  77. SEEN-BY: 153/752 154/40 77 157/2 159/100 125 575 950 203/23 209/209 280/1
  78. SEEN-BY: 390/1 396/1 5 15 2270/1 2440/5 3603/20
  79.